/**
 * ESLint 配置文件
 * 为整个 monorepo 项目提供统一的代码质量检查规则
 */
const js = require('@eslint/js');
const tseslint = require('typescript-eslint');

module.exports = [
  // 基础 JavaScript 配置
  js.configs.recommended,

  // TypeScript 配置
  ...tseslint.configs.recommended,

  // 全局配置
  {
    languageOptions: {
      ecmaVersion: 2022,
      sourceType: 'module',
      globals: {
        console: 'readonly',
        process: 'readonly',
        Buffer: 'readonly',
        __dirname: 'readonly',
        __filename: 'readonly',
        module: 'readonly',
        require: 'readonly',
        exports: 'readonly',
        global: 'readonly',
      },
    },
    rules: {
      // 基础规则
      'no-console': 'warn',
      'no-debugger': 'error',
      'no-unused-vars': 'off', // 由 TypeScript 处理
      'prefer-const': 'error',
      'no-var': 'error',

      // TypeScript 规则
      '@typescript-eslint/no-unused-vars': [
        'error',
        { argsIgnorePattern: '^_' },
      ],
      '@typescript-eslint/explicit-function-return-type': 'off',
      '@typescript-eslint/explicit-module-boundary-types': 'off',
      '@typescript-eslint/no-explicit-any': 'warn',
      '@typescript-eslint/no-empty-function': 'off',
    },
  },

  // React 项目特定配置
  {
    files: ['apps/**/*.{js,jsx,ts,tsx}', 'packages/ui/**/*.{js,jsx,ts,tsx}'],
    languageOptions: {
      parserOptions: {
        ecmaFeatures: {
          jsx: true,
        },
      },
    },
    rules: {
      // React 相关规则可以在这里添加
    },
  },

  // 配置文件允许使用 require
  {
    files: ['**/*.config.js', '**/*.config.ts', 'eslint.config.js'],
    rules: {
      '@typescript-eslint/no-require-imports': 'off',
    },
  },

  // 忽略文件
  {
    ignores: [
      'node_modules/**',
      'dist/**',
      'build/**',
      '.nx/**',
      'coverage/**',
      '*.min.js',
      'pnpm-lock.yaml',
      '.next/**',
      '.nuxt/**',
      '.output/**',
      '.vite/**',
      'storybook-static/**',
    ],
  },
];
